package htw.wi.praktikum.pizzadienst.daten;

import htw.wi.praktikum.pizzadienst.aufzaehlung.Mindestbestellwert;
import htw.wi.praktikum.pizzadienst.aufzaehlung.Postleitzahl;


/**
 * Diese Klasse implementiert die datentechnische Darstellung einer Kundenadresse
 * 
 * @version 1.0
 */
public class Adresse {
	private String strasse;
	private String hausnummer;
	private Postleitzahl ortscode;
	private Mindestbestellwert wertcode;
	private int plz;
	private String ort;
	
	/**
	 * Default-Konstruktor
	 */
	public Adresse() {
		
	}
	
	/**
	 * Konstruktor
	 * 
	 * @param strasse die Strasse in der der Kunde wohnt
	 * @param hausnummer die Hausnummer des Kunden
	 * @param ortscode der Orstcode des Kunden vom Typ {@link Postleitzahl}
	 */
	public Adresse(String strasse, String hausnummer, Postleitzahl ortscode) {
		this.strasse = strasse;
		this.hausnummer = hausnummer;
		this.ortscode = ortscode;
		initPostleitzahlUndOrtAusOrtscode();
	}

	public String getStr() {
		return strasse;
	}

	public String getHausnummer() {
		return hausnummer;
	}

	public int getPlz() {
		return plz;
	}
	
	public void setPlz(int plz) {
		this.plz = plz;
	}

	public String getOrt() {
		return ort;
	}

	public void setStr(String str) {
		this.strasse = str;
	}

	public void setHausnummer(String hausnummer) {
		this.hausnummer = hausnummer;
	}


	public void setOrt(String ort) {
		this.ort = ort;
	}

	public String getStrasse() {
		return strasse;
	}

	public Postleitzahl getOrtscode() {
		return ortscode;
	}

	public Mindestbestellwert getWertcode() {
		return wertcode;
	}

	public void setStrasse(String strasse) {
		this.strasse = strasse;
	}

	public void setOrtscode(Postleitzahl ortscode) {
		this.ortscode = ortscode;
	}

	public void setWertcode(Mindestbestellwert wertcode) {
		this.wertcode = wertcode;
	}

	/**
	 * Methode initialsiert Postleitzahl, Ort und Wertcode anhand des Ortscodes vom Typ {@link Postleitzahl}
	 */
	private void initPostleitzahlUndOrtAusOrtscode() {
		switch (this.ortscode) {
		case FRIEDRICHSTHAL:
			setPlz(66299);
			setOrt("FRIEDRICHSTHAL");
			setWertcode(Mindestbestellwert.NAHBEREICH);
			break;
		case GROSSROSSELN:
			setPlz(66352);
			setOrt("GROSSROSSELN");
			setWertcode(Mindestbestellwert.NAHBEREICH);
			break;
		case HEUSWEILER:
			setPlz(66265);
			setOrt("HEUSWEILER");
			setWertcode(Mindestbestellwert.FERNBEREICH);
			break;
		case KLEINBLITTERSDORF:
			setPlz(66271);
			setOrt("KLEINBLITTERSDORF");
			setWertcode(Mindestbestellwert.NAHBEREICH);
			break;
		case PUETTLINGEN:
			setPlz(66346);
			setOrt("PUETTLINGEN");
			setWertcode(Mindestbestellwert.FERNBEREICH);
			break;
		case QUIERSCHIED:
			setPlz(66287);
			setOrt("QUIERSCHIED");
			setWertcode(Mindestbestellwert.NAHBEREICH);
			break;
		case RIEGELSBERG:
			setPlz(66292);
			setOrt("RIEGELSBERG");
			setWertcode(Mindestbestellwert.FERNBEREICH);
			break;
		case SAARBRUECKEN:
			setPlz(66111);
			setOrt("SAARBRUECKEN");
			setWertcode(Mindestbestellwert.ULTRANAHBEREICH);
			break;
		case BURBACH:
			setPlz(66115);
			setOrt("BURBACH");
			setWertcode(Mindestbestellwert.ULTRANAHBEREICH);
			break;
		case ALTSAARBRUECKEN:
			setPlz(66117);
			setOrt("ALTSAARBRUECKEN");
			setWertcode(Mindestbestellwert.ULTRANAHBEREICH);
			break;
		case MALSTATT:
			setPlz(66113);
			setOrt("MALSTATT");
			setWertcode(Mindestbestellwert.ULTRANAHBEREICH);
			break;
		case SULZBACH:
			setPlz(66280);
			setOrt("SULZBACH");
			setWertcode(Mindestbestellwert.NAHBEREICH);
			break;
		case VOELKLINGEN:
			setPlz(66333);
			setOrt("VOELKLINGEN");
			setWertcode(Mindestbestellwert.FERNBEREICH);
			break;
		default:
			setPlz(12345);
			setOrt("SONSTIGE");
			setWertcode(Mindestbestellwert.ULTRAFERNBEREICH);
			break;
		}
	}
}